package musica;

import java.io.File;
import java.util.LinkedList;
import java.util.List;

public class Cancion {
	
    private Datos datos;
    private static List<Cancion> canciones = new LinkedList<Cancion>();
    private boolean disponible;
    private File file;
	
    /** Crea una cancion y se anade a la lista*/
    public Cancion(String p, Datos d) {
        file = new File(p);
        datos = d;
        canciones.add(this);
		
        disponible = true;
    }
    /** Crea una cancion y se anade a la lista*/
    public Cancion(String p) {
        file = new File(p);
        canciones.add(this);
		
        disponible = true;
    }
	
    /** Crea una cancion y se anade a la lista*/
    public Cancion(File f) {
        file = f;
        canciones.add(this);
		
        disponible = true;
    }
	
    /** Devuelve true si el archivo de la cancion existe */
    public boolean getDisponible() {
        return file.exists();
    }
	
    /** Devuelve el path asociado a la cancion*/
    public String getPath() {
        return file.getAbsolutePath();
    }
	
    /** Devuelve el archivo asociado a la cancion */
    public File getFile() {
        return file;
    }
	
    /** Busca canciones a partir del path_inicial y las anade a la propia lista
	 de canciones. Se pueden obtener mediante el retorno de la funcion, o desde
     * el metodo estatico Cancion.getCanciones();*/
    public static List<Cancion> buscar_canciones(File raiz) {
        File[] actual = raiz.listFiles();
		
        for (int i = 0; i < actual.length; i++) {
            if (actual[i].isDirectory()) 
                buscar_canciones(actual[i]);
            else if (actual[i].isFile() && actual[i].getName().endsWith(".mp3")) 
                new Cancion(actual[i]);
        }
        return canciones;
                    
    }
    
    @Override
    public String toString()  {
        return file.toString();
    }
            
	
    public static List<Cancion> getCanciones() {
        return canciones;
    }
}
